In many scenarios there is no single solver that will dominate or provide optimal performance across a wide range of problem instances. Algorithm selection in algorithm portfolios is designed to help identify the best approach for each problem at hand, to select the best algorithm for a given problem instance. This selection is usually based on carefully constructed features that characterize problem instances, designed to quickly present the overall structure of the problem instance as a constant size numeric vector. Based on these features, a number of machine learning techniques can be utilized to predict the appropriate solver to execute, leading to improvements over relying solely on any one solver. However, feature generation usually involves a manually process, and the creation of good features becomes an arduous task requiring a great deal of knowledge of the problem domain of interest and expertise.